package com.yonyou.struts2demo.getformdata;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.yonyou.struts2demo.form.User;

/**
 * @Author wwj
 * @Date 2021/12/13
 * @Description 第三种最重要！！！ 使用模型驱动方式，可以直接把表单数据封装到实体类对象里面
 * 实现步骤：
 * 1 action实现接口 ModelDriven
 * 2 实现接口里面的方法 getModel() , 把创建对象返回
 * 3 在 action 里面创建实体类对象
 */
public class GetFormModelAction extends ActionSupport implements ModelDriven<User> {

    // 创建对象
    // 前提要求：表单输入项 name 属性值 和实体类属性名称一致
    private User user = new User();

    @Override
    public User getModel() {
        // 返回创建 user 对象
        return user;
    }

    @Override
    public String execute() throws Exception {

        System.out.println("user = " + user);
        return NONE;
    }

    /**
     * 使用模型驱动和属性封装注意事项：
     * （1）在一个 action 中，获取表单数据可以属性封装，也可以使用模型驱动封装，
     *      但是不能同时使用属性封装和模型驱动封装获取同一个表单数据
     *      如果同时使用，只会执行模型驱动
     */
}
